<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title>GNUcode.me</title><id>https://gnucode.me/feeds/tags/emacs.xml</id><subtitle>Tag: emacs</subtitle><updated>2024-05-08T13:40:23Z</updated><link href="https://gnucode.me/feeds/tags/emacs.xml" rel="self" /><link href="https://gnucode.me" /><entry><title>Status Update October 2021</title><id>https://gnucode.me/status-update-october-2021.html</id><author><name>Joshua Branson</name><email>jbranso@dismail.de</email></author><updated>2021-11-01T03:50:00Z</updated><link href="https://gnucode.me/status-update-october-2021.html" rel="alternate" /><content type="html">&lt;p&gt;The main thing that I have been working on this month is an
&lt;code&gt;opensmtpd-service&lt;/code&gt; that uses &lt;code&gt;(guix records)&lt;/code&gt;. The code is &lt;a href=&quot;https://notabug.org/jbranso/linode-guix-system-configuration/src/master/opensmtpd-records.scm&quot;&gt;here.&lt;/a&gt;
It has been a real pleasure creating the various records to turn this:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;(service opensmtpd-service-type
         (opensmtpd-configuration
          (queue
           (opensmtpd-queue-configuration
            (compression #t)))
          (smtp
           (opensmtpd-smtp-configuration
            (max-message-size &amp;quot;10M&amp;quot;)))
          (srs
           (opensmtpd-srs-configuration
            (ttl-delay &amp;quot;5d&amp;quot;)))
          (pkis (list
                 (opensmtpd-pki
                  (domain &amp;quot;smtpd.gnucode.me&amp;quot;)
                  (cert &amp;quot;/etc/letsencrypt/live/gnucode.me/fullchain.pem&amp;quot;)
                  (key &amp;quot;/etc/letsencrypt/live/gnucode.me/privkey.pem&amp;quot;))))
          (tables (list
                   (opensmtpd-table
                    (name &amp;quot;aliases&amp;quot;)
                    (values
                     (list
                      (cons &amp;quot;webmaster&amp;quot; &amp;quot;root&amp;quot;)
                      (cons &amp;quot;postmaster&amp;quot; &amp;quot;root&amp;quot;)
                      (cons &amp;quot;abuse&amp;quot; &amp;quot;root&amp;quot;))))
                   (opensmtpd-table
                    (name &amp;quot;creds&amp;quot;)
                    (values
                     (list
                      (cons &amp;quot;joshua&amp;quot;
                            &amp;quot;$6$Ec4m8FgKjT2F/03Y$k66ABdse9TzCX6qaALB3WBL9GC1rmAWJmaoSjFMpbhzat7DOpFqpnOwpbZ34wwsQYIK8RQlqwM1I/v6vsRq86.&amp;quot;))))
                   (opensmtpd-table
                    (name &amp;quot;vdoms&amp;quot;)
                    (values (list &amp;quot;gnucode.me&amp;quot;
                                  &amp;quot;gnu-hurd.com&amp;quot;)))
                   (opensmtpd-table
                    (name &amp;quot;vusers&amp;quot;)
                    (values (list (cons &amp;quot;joshua@gnucode.me&amp;quot; &amp;quot;joshua&amp;quot;)
                                  (cons &amp;quot;jbranso@gnucode.me&amp;quot; &amp;quot;joshua&amp;quot;)
                                  (cons &amp;quot;postmaster@gnucode.me&amp;quot; &amp;quot;joshua&amp;quot;))))))
          (listen-ons
           (list
            ;; this forum help suggests that I listen on 0.0.0.0 and NOT eth0
            ;; https://serverfault.com/questions/726795/opensmtpd-wont-work-at-reboot
            ;; this listens for email from the outside world
            (opensmtpd-listen-on
             (interface &amp;quot;eth0&amp;quot;)
             (port 25)
             (secure-connection &amp;quot;tls&amp;quot;)
             (pki &amp;quot;smtp.gnucode.me&amp;quot;))
            ;; this lets local users logged into the system via ssh send email
            (opensmtpd-listen-on
             (interface &amp;quot;lo&amp;quot;)
             (port 25)
             (secure-connection &amp;quot;tls&amp;quot;)
             (pki &amp;quot;smtp.gnucode.me&amp;quot;))
            (opensmtpd-listen-on
             (interface &amp;quot;eth0&amp;quot;)
             (port 465)
             (secure-connection &amp;quot;smtps&amp;quot;)
             (pki &amp;quot;smtp.gnucode.me&amp;quot;)
             (auth &amp;quot;&amp;lt;creds&amp;gt;&amp;quot;))
            (opensmtpd-listen-on
             (interface &amp;quot;eth0&amp;quot;)
             (port 587)
             (secure-connection &amp;quot;tls-require&amp;quot;)
             (pki &amp;quot;smtp.gnucode.me&amp;quot;)
             (auth &amp;quot;&amp;lt;creds&amp;gt;&amp;quot;))
            ))
          (actions
           (list
            (opensmtpd-action
               (name &amp;quot;receive&amp;quot;)
               (method
                (opensmtpd-local-delivery-configuration
                 (method (opensmtpd-maildir-configuration
                          (pathname &amp;quot;/home/%{rcpt.user}/Maildir&amp;quot;)
                          (junk #t)))
                 (virtual &amp;quot;vusers&amp;quot;))))
            (opensmtpd-action
             (name &amp;quot;send&amp;quot;)
             (method (opensmtpd-relay-configuration)))))
          (matches (list
                    (opensmtpd-match
                     (name &amp;quot;send&amp;quot;)
                     (for &amp;quot;for any&amp;quot;)
                     (from &amp;quot;from any&amp;quot;)
                     (auth &amp;quot;auth&amp;quot;))
                    (opensmtpd-match
                     (name &amp;quot;receive&amp;quot;)
                     (from &amp;quot;from any&amp;quot;)
                     (for &amp;quot;for domain &amp;lt;vdoms&amp;gt;&amp;quot;))
                    (opensmtpd-match
                     (name &amp;quot;receive&amp;quot;)
                     (for &amp;quot;for local&amp;quot;))))
          (filter-chains
           (list
            (opensmtpd-filter-chain
             (name &amp;quot;dropDumbEmails&amp;quot;)
             (filter-names (list &amp;quot;nofcrdnsDisconnect&amp;quot;
                                 &amp;quot;nordnsDisconnect&amp;quot;)))))
          (filter-phases
           (list (opensmtpd-filter-phase
                  (name &amp;quot;nofcrdnsDisconnect&amp;quot;)
                  (phase-name &amp;quot;connect&amp;quot;)
                  (conditions (list &amp;quot;!fcrdns&amp;quot;))
                  (decision &amp;quot;disconnect&amp;quot;)
                  (message &amp;quot;You have not set up forward confirmed DNS.&amp;quot;))
                 (opensmtpd-filter-phase
                  (name &amp;quot;nordnsDisconnect&amp;quot;)
                  (phase-name &amp;quot;connect&amp;quot;)
                  (conditions (list &amp;quot;!rdns&amp;quot;))
                  (decision &amp;quot;reject&amp;quot;)
                  (message &amp;quot;You have not set up reverse DNS.&amp;quot;))))))&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;into this:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;smtp max-message-size 10M


srs ttl 5d


queue compression

table aliases { &amp;quot;webmaster&amp;quot; = &amp;quot;root&amp;quot;, &amp;quot;postmaster&amp;quot; = &amp;quot;root&amp;quot;, &amp;quot;abuse&amp;quot; = &amp;quot;root&amp;quot; }
table creds { &amp;quot;joshua&amp;quot; = &amp;quot;$6$Ec4m8FgKjT2F/03Y$k66ABdse9TzCX6qaALB3WBL9GC1rmAWJmaoSjFMpbhzat7DOpFqpnOwpbZ34wwsQYIK8RQlqwM1I/v6vsRq86.&amp;quot; }
table vdoms { &amp;quot;gnucode.me&amp;quot;, &amp;quot;gnu-hurd.com&amp;quot; }
table vusers { &amp;quot;joshua@gnucode.me&amp;quot; = &amp;quot;joshua&amp;quot;, &amp;quot;jbranso@gnucode.me&amp;quot; = &amp;quot;joshua&amp;quot;, &amp;quot;postmaster@gnucode.me&amp;quot; = &amp;quot;joshua&amp;quot; }

pki smtpd.gnucode.me cert &amp;quot;/etc/letsencrypt/live/gnucode.me/fullchain.pem&amp;quot;
pki smtpd.gnucode.me key &amp;quot;/etc/letsencrypt/live/gnucode.me/privkey.pem&amp;quot;

filter &amp;quot;nofcrdnsDisconnect&amp;quot; phase connect match !fcrdns disconnect &amp;quot;You have not set up forward confirmed DNS.&amp;quot;
filter &amp;quot;nordnsDisconnect&amp;quot; phase connect match !rdns reject &amp;quot;You have not set up reverse DNS.&amp;quot;

filter &amp;quot;dropDumbEmails&amp;quot; chain {nofcrdnsDisconnect, nordnsDisconnect}

listen on eth0 tls port 25 pki smtp.gnucode.me
listen on lo tls port 25 pki smtp.gnucode.me
listen on eth0 smtps port 465 pki smtp.gnucode.me auth &amp;lt;&amp;lt;creds&amp;gt;&amp;gt;
listen on eth0 tls-require port 587 pki smtp.gnucode.me auth &amp;lt;&amp;lt;creds&amp;gt;&amp;gt;

action &amp;quot;receive&amp;quot; maildir &amp;quot;/home/%{rcpt.user}/Maildir&amp;quot; junk
action &amp;quot;send&amp;quot; relay

match from any for any auth tls action &amp;quot;send&amp;quot;
match from any for domain &amp;lt;vdoms&amp;gt; tls action &amp;quot;receive&amp;quot;
match for local tls action &amp;quot;receive&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Looking at it now, one might almost prefer just to use the opensmtpd
configuration syntax.  Still it is nice to be able to use a schemey
syntax and translate in into something that opensmtpd can parse.
Perhaps someone could potentially configure a webserver via something
like this:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;(service email-service-type
         (email-service-configuration
          (domains (list &amp;quot;gnucode.me&amp;quot;
                         &amp;quot;gnu-hurd.com&amp;quot;))
          (use-letsencrypt-certs #t)))&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Perhaps the above would set up a DNS server at smtp.domain.name.  And
serve the emails via dovecot.  Though that would be a task for someone else.&lt;/p&gt;&lt;p&gt;Future work for my opensmtpd-service via &lt;code&gt;(guix records)&lt;/code&gt; includes
writing figure out how to let &lt;code&gt;opensmtpd-filter-proc-exec&lt;/code&gt; accept a
list of strings and gexps.  I currently could use my opensmtpd-service
for my linode server via the &lt;code&gt;includes&lt;/code&gt; directive, but I'd rather use
the &lt;code&gt;opensmtpd-filter-proc-exec&lt;/code&gt;.  My current opensmtpd configuration
can be found
&lt;a href=&quot;https://notabug.org/jbranso/linode-guix-system-configuration/src/master/opensmtpd.scm&quot;&gt;here&lt;/a&gt;.
If you can think of anyway that I can improve the code, please reach
out: jbranso AT dismail DOT de.&lt;/p&gt;&lt;h2&gt;I made a cookbook submission about auto logging into tty3&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;http://issues.guix.gnu.org/48974#13&quot;&gt;http://issues.guix.gnu.org/48974#13&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This was a while ago, but I did write an entry in the cookbook about
how to autologin to a specific tty.  So if you want to learn how to
auto login to sway via guix system, this is part of that solution.&lt;/p&gt;&lt;h2&gt;I am now hosting an xmpp account on gnucode.me.&lt;/h2&gt;&lt;p&gt;My jmp.chat account delivers SMS text messages to my XMPP account at
via dismail.de.  Perhaps one day soon, I'll be able to host my own
chats via gnucode.me.  That would be pretty awesome!&lt;/p&gt;&lt;h2&gt;Guix's official libreboot cookbook guide&lt;/h2&gt;&lt;p&gt;I also need to finish Raghav's &lt;a href=&quot;http://issues.guix.gnu.org/49654#1&quot;&gt;libreboot
cookbook&lt;/a&gt; guide for inclusion to
the guix cookbook.&lt;/p&gt;</content></entry><entry><title>Status Update September 2021</title><id>https://gnucode.me/status-update-september-2021.html</id><author><name>Joshua Branson</name><email>jbranso@dismail.de</email></author><updated>2021-10-01T11:50:00Z</updated><link href="https://gnucode.me/status-update-september-2021.html" rel="alternate" /><content type="html">&lt;p&gt;Today, I have some fantastic news!  I now have prosody serving my
XMPP account.  It's pretty fantastic!&lt;/p&gt;&lt;p&gt;Future work includes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Migrating my jmp.chat account to use my new prosody account.
This can be done with &lt;a href=&quot;http://emacs-jabber.sourceforge.net/manual-0.7.1/Roster-import-and-export.html&quot;&gt;emacs jabber mode&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Setting up bogofilter or something like it for my prosody
account.  Though, I may not need this.  It's possible that
&lt;a href=&quot;https://jmp.chat&quot;&gt;jmp.chat&lt;/a&gt; already has this.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Set up a web interface, where users can buy an XMPP account
from me.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;I manually imported the letsencrypt cert for prosody to use.  I
need a way to automate this process everytime the letsencrypt
cert gets updated.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I finally got gnucode.me hosting my own email account!  I can
send and receive email from 'joshua' AT 'the afore mentioned domain name'.&lt;/p&gt;&lt;p&gt;I finally got email working for gnucode.me.  I have SPF, DKIM,
and DMARC working.  This should make it good enough that gmail
will not flag my email as spam.&lt;/p&gt;&lt;p&gt;Further work includes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;setting up Sieve filtering with dovecot, so the server can do email filtering for me.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;sanitizing the dovecot &lt;code&gt;ssl-cert&lt;/code&gt; and &lt;code&gt;ssl-key&lt;/code&gt; fields.  I put
in a &lt;code&gt;/path/to/fullchain.pem/&lt;/code&gt;.  I could sanitize it to produce
a path of &lt;code&gt;&amp;lt;/path/to/fullchain.pem/&lt;/code&gt;.  I could also add in some
code to let it just uses the letsencrypt certs.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Setting up a web based email workflow with Drew Devault's Go
based webmail software and configuring it to set up email
filtering.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Creating opensmtpd records using &lt;code&gt;(guix records)&lt;/code&gt; so that it is
easier for other guix users to configure opensmtpd for their
needs.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Configuring and setting up Opensmtpd to use a database for
email accounts.  This way, I can create a web interface to
charge people for the email account and immediately activate
their email account.  Currently, if I want to add a new email
account, I have to add a new user to guix system, and then I
have to run &lt;code&gt;guix system reconfigure config.scm&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Configuring opensmtpd to let dovecot handle email delivery via &lt;code&gt;lmtp&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Figuring out how deliver email to &amp;lt;user&amp;gt;@gnucode.me, and &amp;lt;user&amp;gt;
is not a user with a corresponding &lt;code&gt;/home/&amp;lt;user&amp;gt;/&lt;/code&gt; on my linode
guix system.  Dovecot has methods to doing this, I just need to
investigate them.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Configuring bogofilter or rspamd to work with opensmtpd.
Currently my gnucode account is open to getting lots of spam!&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Configuring opensmtpd to mark messages as junk if are not
configured to use DKIM, SPF, and DMARC.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;So if you would like an email account or an XMPP account, feel
free to reach out.  Paying for one of these accounts will help me
contribute to &lt;a href=&quot;https://guix.gnu.org&quot;&gt;guix&lt;/a&gt; and other free software projects.&lt;/p&gt;</content></entry><entry><title>Propernaming.org</title><id>https://gnucode.me/propernamingorg.html</id><author><name>Joshua Branson</name><email>jbranso@dismail.de</email></author><updated>2020-11-23T21:00:00Z</updated><link href="https://gnucode.me/propernamingorg.html" rel="alternate" /><content type="html">&lt;p&gt;So, when I started this blog, I told myself that I would try really hard to
avoid any political topics.  Well, today I am bending that rule a little bit,
because this is too funny to ignore.  My goal here is just to make some people
laugh.  If this humor isn't for you, then that's ok.  I hope we can still be
friends.&lt;/p&gt;&lt;p&gt;Recently, Redhat, IBM, and some other big tech companies have launched
&amp;quot;inclusivenaming.org&amp;quot;.  If you haven't gone and checked out the site, then you
probably should.  It'll give you a good laugh.  Essentially, they are certifying
that their software projects do &lt;em&gt;not&lt;/em&gt; include the words &amp;quot;blacklist/whitelist&amp;quot; or
&amp;quot;master/slave&amp;quot;, and they encourage others to follow suit.&lt;/p&gt;&lt;p&gt;I personally find this policing of language and virtual signaling really
hilarious.  You can imagine all the new tweets that can come out of it.  Tweets
like, &amp;quot;Just watching 'Leader and commander, far side of the world.  Russell
Crowe is a really great mast--I mean--leader.&amp;quot;&lt;/p&gt;&lt;p&gt;So I figured, given a few hours, that I could make my own version of
inclusivenaming.org...So you should really go check out
&lt;a href=&quot;https://propernaming.org&quot;&gt;propernaming.org&lt;/a&gt;.  Seriously, it's a good laugh, and
'laughter is good for the digestion'.&lt;/p&gt;&lt;p&gt;Where-ever you line up on this issue, is fine with me. But can we all agree that
actual slavery is worse than the language that we use?  There are a ton of
actual slaves all around the worse.  Many of them are sex slaves.  :(  So, check
out &lt;a href=&quot;https://propernaming.org&quot;&gt;propernaming.org&lt;/a&gt;, and if you have some money to
spare, then please consider &lt;a href=&quot;https://propernaming.org/money-raised.html&quot;&gt;donating some
money&lt;/a&gt; to end slavery.  :)&lt;/p&gt;</content></entry><entry><title>Emacs Init File Errors</title><id>https://gnucode.me/emacs-init-file-errors.html</id><author><name>Joshua Branson</name><email>jbranso@dismail.de</email></author><updated>2018-05-13T18:00:00Z</updated><link href="https://gnucode.me/emacs-init-file-errors.html" rel="alternate" /><content type="html">&lt;p&gt;This morning, I was rummaging through my emacs init files, and I was noticing
that as emacs started up, it seemed to be opening a lot of files.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&amp;quot;Hmmm, am I using desktop-save-mode?&amp;quot;  I wondered.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Desktop-save-mode is an emacs mode that saves your emacs session.  It remembers,
which files you had opened, point's location in the files, etc.   When you open
emacs again, emacs opens just the way you had it the last time. It can be kind
of nice, but it can also make emacs slow to start.&lt;/p&gt;&lt;p&gt;So I was noticing that when I started emacs, it was taking opening a ton of
files, and wasting a lot of time doing so.  So I looked through my init file and
found that I was NOT using desktop-save-mode.  So something else was causing
this.&lt;/p&gt;&lt;p&gt;I had to find the error the hard way: I commented more than half of my init
file. Then I shut down emacs.  Restarted.  Then I un-commented out one line. 
Shut off emacs restarted. Repeat.  I finally found the culprit:
&lt;code&gt;(add-hook 'after-init-hook 'org-agenda-list)&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Basically after my Emacs load, org-mode is opening lots of files to build the
agenda.  It had to open 15 files!  And I only needed two of those files to build
the agenda!  So I removed several files from the org-agenda-files variable and
that solved the problem.  Onto the next issue with my emacs config files!&lt;/p&gt;</content></entry></feed>